home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / misc / memtest8.000 / memtest8 / memtest86 / README < prev    next >
Encoding:
Text File  |  1996-05-29  |  5.8 KB  |  148 lines

  1.             ===================
  2.             = MemTest-86 v1.1 =
  3.             ===================
  4.  
  5. Introduction
  6. ============
  7. MemTest-86 is thorough, stand alone memory test for 386, 486 and 586
  8. systems.  MemTest-86 uses a "moving inversions" algorithm that is proven
  9. to be effective in finding memory errors.  The BIOS based memory test is
  10. just a quick check that will often miss many of the failures that are
  11. detected by MemTest-86.
  12.  
  13.  
  14. Enhancements in v1.1
  15. ====================
  16. 1) The memory sizing algorithm has been improved by limiting the memory
  17.    scan to the memory size from the BIOS.
  18.  
  19. 2) A provision to disable L1, L2 caches was added.  With this enhancement
  20.    cache is on for even numbered passes and off for odd passes.  The
  21.    test algorithms used by MemTest-86 are able to do fairly effective
  22.    testing of memory with cache on.  However, testing with cache off may
  23.    be more effective.  In addition the test algorithms will not work
  24.    correctly on systems with write-back cache when cache is enabled.
  25.    The down side is that execution time is much, much longer when cache
  26.    is off.  This feature may be disabled by commenting out the
  27.    "CACHE=-DCACHE" line in the Makefile (not recommended).
  28.  
  29. 3) The ability to test memory using longer refresh rates was added.  This
  30.    enhancement makes is possible to detect marginal errors that otherwise
  31.    would go undetected with the normal refresh rate.  Two refresh rates
  32.    are used, the normal of 15ms and an extended refresh rate of 150ms.
  33.    The test alternates between normal and extended refresh every two
  34.    passes.  This allows for testing with cache both on and off before
  35.    switching refresh rates.  This feature may be disabled by commenting
  36.    out the "REFRESH=-DREFRESH" line in the Makefile.  If this feature is
  37.    disabled the refresh rate set by the BIOS is not altered. 
  38.  
  39. 4) Changes were made to accommodate building MemTest-86 under Linux 1.3.
  40.  
  41. 5) The placement of the data segment is overridden to make the executable
  42.    more compact (the new size is just over 3k). 
  43.  
  44.  
  45. Installation
  46. ============
  47. MemTest-86 is a stand alone program and must be loaded from a floppy disk.
  48.  
  49. To create a MemTest-86 boot-disk:
  50.  
  51.    1) Edit the Makefile and adjust the following options as needed:
  52.      REL_1.x - Set Linux release level
  53.      FDISK - path to your floppy drive
  54.    2) Insert a blank write enabled floppy disk.
  55.    3) Type "make install"
  56.  
  57. Incompatibilities have been encountered with each of the last two versions
  58. of the loader.  If you are running a version of Linux other than 1.2 or 1.3
  59. and encounter build problems a binary image has been included (image.bin).
  60. To create a boot-disk with this pre-built image do the following:
  61.  
  62.    1) Insert a blank write enabled floppy disk.
  63.    2) Type "make install-bin"
  64.  
  65.  
  66. Bugs
  67. ====
  68. It has been reported that with some motherboards MemTest-86 fails when
  69. shadow memory is enabled.  The cause for this failure is not yet
  70. understood.  If you encounter large numbers of errors on an otherwise
  71. working system try disabling shadow memory.
  72.  
  73.  
  74. Functional Description
  75. ======================
  76. Bootstrap and setup code (robbed shamelessly from the Linux kernel) is used
  77. to load MemTest-86 from the floppy disk, setup memory management registers
  78. and do miscellaneous setup.  When the load and setup are complete the
  79. memory layout will be as follows.
  80.  
  81. 0x000    |-------------------------------|
  82.     |    Stack (256bytes)    |
  83. 0x100    |-------------------------------|
  84.     |    MemTest (3.25k)        |
  85. 0xe00    ---------------------------------
  86.     
  87. When MemTest-86 is loaded into memory it first scans memory to find all
  88. segments of available read/write memory (DRAM).  DRAM is identified by
  89. reading a location and then writing its complement.  If any bits change
  90. then we assume that it is DRAM.  To save time we only do this check every
  91. 64 bytes.  Video display memory is skipped over.  Each segment of memory
  92. is displayed on the left side of the screen.  All segments of memory that
  93. are found will be tested regardless of size.  The memory scan is limited
  94. by the memory size value obtained from the BIOS.
  95.  
  96. After the memory segments have been identified the actual testing begins.
  97. Since the memory chips used in PC's are either one or four bits wide
  98. (ie. 1x1meg, 4x1meg, 1x4meg or 4x4meg) a four bit wide test patterns
  99. replicated to fill a 32 bit word are used.  If memory chips become available
  100. in PC's that are wider than four bits then this pattern should be adjusted.
  101. A moving inversions algorithm is then used to test all of memory.  Every
  102. pass through memory is done sequentially through each memory segment.  This
  103. must be done to preserve the integrity of the moving inversions algorithm. 
  104.  
  105.  
  106. Display Description
  107. ===================
  108. The following is a description of each field displayed by MemTest-86:
  109.  
  110. Testing:    A list of all DRAM segments that have been found and will
  111.         be tested.
  112.  
  113. MemSz-BIOS:    The memory size obtained from BIOS (The test will not
  114.         scan for memory beyond this size)
  115.  
  116. Pattern:    The current 32 bit data pattern used for testing
  117.  
  118. Refresh:    The current refresh rate  ("Default" indicates that the
  119.         refresh rate has not been altered)
  120.  
  121. Pass:        Pass count.  (A complete checkout with/without cache and
  122.         extended refresh requires four passes)
  123.  
  124. Errors:        Total errors.
  125.  
  126. Cache:        Cache status for both L1 and L2 cache.
  127.  
  128. The following information is displayed when a memory error is detected.
  129. An error message is only displayed for errors with a different address or
  130. failing bit pattern.  Only the first 23 error messages are displayed and
  131. subsequent error information is lost.  All displayed values are hexadecimal.
  132.  
  133. Addrs:        Failing memory address 
  134. Good:        Current data pattern 
  135. Bad:        Failing data pattern 
  136. Xor:        Exclusive or of good and bad data (this shows the position
  137.         of the failing bit(s))
  138.  
  139.  
  140. Acknowledgments
  141. ===============
  142. The initial versions of the source files bootsect.S, setup.S, head.S and
  143. build.c are from the Linux 1.2.1 kernel and have been heavily modified. 
  144.  
  145. --
  146. Chris Brady
  147. E-mail cbrady@cray.com
  148.